package org.laperra.tienda.model;

import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.TableGenerator;
import javax.persistence.Transient;

@Entity
public class Cliente{

	private Integer idCliente;
	private String nif;
	private String nombre;
	private String direccion;
	private String codigoPostal;
	private String poblacion;
	private String provincia;
	private String telefono;
	private String movil;
	private String email;
	private List<Factura>facturas;
	
	
	public Cliente(){
		
	}
	
	
	
	public Cliente(Integer idCliente, String nif, String nombre,
			String direccion, String codigoPostal, String poblacion,
			String provincia, String telefono) {
		
		this.idCliente = idCliente;
		this.nif = nif;
		this.nombre = nombre;
		this.direccion = direccion;
		this.codigoPostal = codigoPostal;
		this.poblacion = poblacion;
		this.provincia = provincia;
		this.telefono = telefono;
	}


	@Id
	@TableGenerator(name="idCliente",table="ClientePrimaryKey",pkColumnName="clienteKey",pkColumnValue="clienteValor", allocationSize=1)
	@GeneratedValue(strategy=GenerationType.TABLE, generator="idCliente")//genera un valor para la clave de forma automatica
   public Integer getIdCliente() {
		return idCliente;
	}
	public void setIdCliente(Integer idCliente) {
		this.idCliente = idCliente;
	}
	@Column(nullable=false, unique=true)
	public String getNif() {
		return nif;
	}
	public void setNif(String nif) {
		this.nif = nif;
	}
	@Column(nullable=false)
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	@Column(nullable=false)
	public String getDireccion() {
		return direccion;
	}
	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}
	public String getCodigoPostal() {
		return codigoPostal;
	}
	public void setCodigoPostal(String codigoPostal) {
		this.codigoPostal = codigoPostal;
	}
	@Column(nullable=false)
	public String getPoblacion() {
		return poblacion;
	}
	public void setPoblacion(String poblacion) {
		this.poblacion = poblacion;
	}
	@Column(nullable=false)
	public String getProvincia() {
		return provincia;
	}
	public void setProvincia(String provincia) {
		this.provincia = provincia;
	}
	public String getTelefono() {
		return telefono;
	}
	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}
	
	public String getMovil() {
		return movil;
	}
	
	public void setMovil(String movil) {
		this.movil = movil;
	}
	
	public void setEmail(String email) {
		this.email = email;
	}
	public String getEmail() {
		return email;
	}
	
	public void setFacturas(List<Factura> facturas) {
		this.facturas = facturas;
	}
	@OneToMany(targetEntity=Factura.class, mappedBy="cliente", cascade=CascadeType.ALL,fetch=FetchType.EAGER)
	@Transient
	public List<Factura> getFacturas() {
		return facturas;
	}
}
